﻿using System;

class Printer
{
    public void PrintFirearms(Firearm unit1, Firearm unit2, Firearm unit3, Firearm unit4) 
    {
        Console.WriteLine("Выберите огнестрельное оружие " + "\n"
                    +"0 - первый вариант, 1 - второй вариант, 2 - третий, 3 - четвертый:\n"
                    + "Название: " + unit1.Name + " // " + unit2.Name + "\n"
                    + "Цена: " + unit1.Price + " // " + unit2.Price + "\n"
                    + "Вес: " + unit1.Weight + " // " + unit2.Weight + "\n"
                    + "Калибр: " + unit1.Bullets_caliber + " // " + unit2.Bullets_caliber + "\n"
                    + "Патронов в обойме: " + unit1.Bullets_quantity + " // " + unit2.Bullets_quantity + "\n"
                    + "Прицельная дальность: " + unit1.Effective_range + " // " + unit2.Effective_range + "\n");

        Console.WriteLine("Название: " + unit3.Name + " // " + unit4.Name + "\n"
           + "Цена: " + unit3.Price + " // " + unit4.Price + "\n"
           + "Вес: " + unit3.Weight + " // " + unit4.Weight + "\n"
           + "Калибр: " + unit3.Bullets_caliber + " // " + unit4.Bullets_caliber + "\n"
           + "Патронов в обойме: " + unit3.Bullets_quantity + " // " + unit4.Bullets_quantity + "\n"
           + "Прицельная дальность: " + unit3.Effective_range + " // " + unit4.Effective_range + "\n");
    }
    public void PrintColdArm(ColdsteelWeapon unit1, ColdsteelWeapon unit2)
    {
        Console.WriteLine("выберите холодное оружие (0 - первый вариант, 1 - второй вариант):\n"
                    + "Название: " + unit1.Name + " // " + unit2.Name + "\n"
                    + "Цена: " + unit1.Price + " // " + unit2.Price + "\n"
                    + "Вес: " + unit1.Weight + " // " + unit2.Weight + "\n"
                    + "Длина клинка: " + unit1.Blade_length + " // " + unit2.Blade_length + "\n");
    }
    public void PrintMessage(string message)
    {
        Console.WriteLine(message);
    }
}

class Data
{
    public Firearm[] main_fa;
    public ColdsteelWeapon[] main_cold;
    public Division division;

    private FirearmCreator[] creator_fa;
    private ColdsteelWeaponCreator creator;

    public void BindCreators()
    {
        main_fa = new Firearm[4];
        main_cold = new ColdsteelWeapon[2];
        creator_fa = new FirearmCreator[2];
        creator_fa[0] = new HandgunCreator();
        creator_fa[1] = new HandgunCreator();
        creator = new BayonetCreator();
        division = new Division();
    }

    public void BindDate()
    {
        main_fa[0] = creator_fa[1].FactoryMethod("Steyr AUG", 6000, 60, 5.56, 30, 400);
        main_fa[1] = creator_fa[1].FactoryMethod("А-545", 3000, 70, 5.45, 30, 400);
        main_fa[2] = creator_fa[0].FactoryMethod("Bushmaster ACR", 3500, 30, 5.56, 30, 350);
        main_fa[3] = creator_fa[0].FactoryMethod("FN SCAR", 1500, 16, 5.56, 0, 30);
        main_cold[0] = creator.FactoryMethod("Штык", 300, 150, 450);
        main_cold[1] = creator.FactoryMethod("Нож", 500, 120, 250);
    }
}

class Dialog
{
    public void dialog(Data data, Printer print)
    {
        data.division = new Division();
        print.PrintMessage("Введите количество бойцов:");
        data.division.quantity_units = Convert.ToDouble(Console.ReadLine());

        print.PrintFirearms(data.main_fa[0], data.main_fa[1], data.main_fa[2], data.main_fa[3]);
        if (Console.ReadLine() == "0")
        {
            data.division.Main_weapon  = data.main_fa[0];
        }
        else if (Console.ReadLine() == "1")
        {
            data.division.Main_weapon = data.main_fa[1];
        }
        else if (Console.ReadLine() == "2")
        {
            data.division.Main_weapon = data.main_fa[2];
        }
        else if (Console.ReadLine() == "3")
        {
            data.division.Main_weapon = data.main_fa[3];
        }

        print.PrintColdArm(data.main_cold[0], data.main_cold[1]);
        if (Console.ReadLine() == "0")
        {
            data.division.Main_coldsteel = data.main_cold[0];
        }
        else
        {
            data.division.Main_coldsteel = data.main_cold[1];
        }
        data.division.Cost();
        data.division.Weight();
    }
}
